export function isvalidUsername(str) {
  const valid_map = ['admin', 'editor'];
  return valid_map.indexOf(str.trim()) >= 0;
}

/*
* 字符串中间不能有空格
* */
export function hasSpace(str) {
  return /\s+/g.test(str);
}

/*
* 合法uri
* */
export function validateURL(textval) {
  const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/;
  return urlregex.test(textval);
}

/*
* 小写字母
* */
export function validateLowerCase(str) {
  const reg = /^[a-z]+$/;
  return reg.test(str);
}

/*
* 大写字母
* */
export function validateUpperCase(str) {
  const reg = /^[A-Z]+$/;
  return reg.test(str);
}

/*
* 大小写字母
* */
export function validateAlphabets(str) {
  const reg = /^[A-Za-z]+$/;
  return reg.test(str);
}

/*
* 数字
*/
export function validateNumber(str) {
  const reg = /^\d+$/ig;
  return reg.test(str);
}

/*
* ip4地址(非严格)
* */
export function ipAddress(str) {
  const reg = /^(((\d{1,2})|(1\d{2,2})|(2[0-4][0-9])|(25[0-5]))\.){3,3}((\d{1,2})|(1\d{2,2})|(2[0-4][0-9])|(25[0-5]))$/;
  return reg.test(str);
}

/*
* 检测编码是否重复
* */
export function validateRoomCode(str) {
  return false;
}

/*
* 正整数校验
* */
// export function validatePositiveNum(str) {
//     const reg = /^[0-9]*[0-9][0-9]*$/;
//     return reg.test(str);
// }

/*
* 由数子、26个英文字母或者下滑线组成的字符串
*/
export function validateENStr(str) {
    // const reg = /^\\w+$/;？？
    const reg = /[^0-9a-zA-Z-_/@#$*.<>]/g;///^[A-Za-z0-9]+$/;
    return reg.test(str);
}

/**
 *子网掩码的验证
 */
export function validateNetMask(str) {
    const  reg =/^(254|252|248|240|224|192|128|0)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)$/;
    return reg.test(str);
}

/**
 * 输入用户名验证
 * @param rule
 * @param value
 * @param callback
 */
export const validateName = (rule, value, callback) => {
    const res1 = /^[\u4e00-\u9fa5_a-zA-Z0-9-]+$/;  //中文、数字、字母、_和-字符
    value = value.trim();
    if (!value || value.length === 0) {
        callback();
    } else if (value.trim().length > 32) {
        callback(new Error('请输入小于32个字符！'));
    } else if (!res1.test(value)) {
        callback(new Error('请输入中文、字母、数字、_或-字符！'));
    } else {
        callback();
    }
};

/**
 *输入设备名称验证
 */
export const validateDeviceName = (rule, value, callback) => {
    const res1 = /^[\u4e00-\u9fa5_a-zA-Z0-9-&]+$/;  //中文、数字、字母、&、_和-字符
    if (!value || value.trim().length === 0) {
        callback(new Error('请输入设备名称'));
    } else if (!res1.test(value)) {
        callback(new Error('请输入中文、数字、字母、&、_和-字符！'));
    } else {
        var realLength = 0;
        var charCode = -1;
        for(var i = 0; i < value.length; i++) {
            charCode = value.charCodeAt(i);
            if(charCode >= 0 && charCode <= 128) {
                realLength += 1;
            } else {
                realLength += 3;
            }
        }
        if(realLength > 40) {
            callback(new Error('请输入小于40个字符，中文计3个字符！'));
        } else {
            callback();
        }

    }
};
/**
 *输入厂商验证
 */
export const validateManufacturer= (rule, value, callback) => {
    const res1 = /^[\u4e00-\u9fa5_a-zA-Z0-9-&]+$/;  //中文、数字、字母、&、_和-字符
    if (!value || value.trim().length === 0) {
        callback(new Error('请输入设备厂商'));
    } else if (!res1.test(value)) {
        callback(new Error('请输入中文、数字、字母、&、_和-字符！'));
    } else {
        var realLength = 0;
        var charCode = -1;
        for(var i = 0; i < value.length; i++) {
            charCode = value.charCodeAt(i);
            if(charCode >= 0 && charCode <= 128) {
                realLength += 1;
            } else {
                realLength += 3;
            }
        }
        if(realLength > 40) {
            callback(new Error('请输入小于40个字符，中文计3个字符！'));
        } else {
            callback();
        }

    }
};


/**
 * 地址验证
 * @param rule
 * @param value
 * @param callback
 */
export const validateAddress = (rule, value, callback) => {
    const res1 = /^[\u4e00-\u9fa5_a-zA-Z0-9-&]+$/;  //中文、数字、字母、&、_和-字符
    value = value.trim();
    if (!value || value.length === 0) {
        callback();
    } else if (value.trim().length > 50) {
        callback(new Error('请输入小于50个字符！'));
    } else if (!res1.test(value)) {
        callback(new Error('请输入中文、数字、字母、&、_和-字符！'));
    } else {
        callback();
    }
};
/**
 * 地址验证
 * @param rule
 * @param value
 * @param callback
 */
export const validateDesAddress = (rule, value, callback) => {
    const res1 = /^[\u4e00-\u9fa5_a-zA-Z0-9-&，,]+$/;  //中文、数字、字母、&、_和-字符
    value = value.trim();
    if (!value || value.length === 0) {
        callback();
    } else if (value.trim().length > 50) {
        callback(new Error('请输入小于50个字符！'));
    } else if (!res1.test(value)) {
        callback(new Error('请输入中文、数字、字母、&、_、-和，字符！'));
    } else {
        callback();
    }
};

/**
 * 验证设备序列号
 * @param rule
 * @param value
 * @param callback
 */
export const validateSerialNumber = (rule, value, callback) => {
    const res = /^[0-9]+$/;  //数字
    if (!value || value.length === 0) {
        callback(new Error('请输入设备序列号'));
    } else if (value.length !== 16) {
        callback(new Error('请输入16位字符！'));
    } else if (!res.test(value)) {
        callback(new Error('请输入数字！'));
    } else {
        callback();
    }
};


/**
 *输入用户名验证
 */
export const validatePositiveNum = (rule, value, callback) => {
    const reg = /^[0-9]*[0-9][0-9]*$/; //整数
    value = value +'';
    if (value === 'null' || value === '' || value.trim().length === 0) {
        if(rule.field === 'deviceVersion') {
            callback(new Error('软件版本号不能为空'));
        } else if (rule.field === 'standardVersion') {
            callback(new Error('接口规范版本号不能为空'));
        } else if (rule.field === 'port') {
            callback(new Error('服务端口不能为空'));
        } else {
            callback(new Error('必填项'));
        }
    } else if (!reg.test(value)) {
        callback(new Error('请输入0或正整数'));
    } else {
        callback();
    }
};

/**
 * 输入的字符串实际长度验证
 */
export const validateNameNew = (rule, value, callback) => {
  const res1 = /^[\u4e00-\u9fa5_a-zA-Z0-9]+$/;  //中文、英文、数字或下划线
  let len = value.trim().replace(/[\u0391-\uFFE5]/g,"aa").length;
  if (!value || value.trim().length === 0) {
    callback(new Error('必填项'));
  } else if (len > 30) {
    callback(new Error('请输入小于30个字符，中文计2个字符长度！'));
  } else if (!res1.test(value)) {
    callback(new Error('请输入中文、英文、数字或下划线字符！'));
  } else {
    callback();
  }
};

/**
 *输入用户名验证
 */
export const validateLesName = (rule, value, callback) => {
  const res1 = /^[\u4e00-\u9fa5_a-zA-Z0-9]+$/;  //中文、英文、数字或下划线
  if (!value || value.trim().length === 0) {
    callback(new Error('必填项'));
  } else if (!res1.test(value)) {
    callback(new Error('请输入中文、英文、数字或下划线字符！'));
  } else {
    callback();
  }
};

/**
 *输入用户ID验证
 */
export const validateID = (rule, value, callback) => {
    const res1 = /^[a-zA-Z0-9_]+$/;  //英文、数字或下划线
    if (!value || value.trim().length === 0) {
        callback(new Error('必填项'));
    } else if (value.trim().length > 32) {
        callback(new Error('请输入小于32个字符！'));
    } else if (!res1.test(value)) {
        callback(new Error('请输入英文、数字或下划线字符！'));
    } else {
        callback();
    }
};

/**
 *输入用户ID验证
 */
export const valNum = (rule, value, callback) => {
    const res1 = /^[a-zA-Z0-9.]+$/;  //英文、数字
    if (!value || value.trim().length === 0) {
        callback(new Error('必填项'));
    } else if (!res1.test(value)) {
        callback(new Error('请输入英文、数字或.字符！'));
    } else {
        callback();
    }
};

/**
 *输入手机号码验证
 */
export const validatePhone = (rule, value, callback) => {
    const res3 = /^1[3|4|5|7|8|9][0-9]{9}$/;
    const res4 = /0\d{2,3}-\d{7,8}$/;
    if (!value || value.trim().length === 0) {
        callback();
    } else if (!(res3.test(value) || res4.test(value))) {
        callback(new Error('请输入有效联系方式'));
    } else {
        callback();
    }
};

/**
 *输入IP验证
 *
 */
export const validateIp = (rule, value, callback) => {
    const reg =
        '^(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])$';
    if (!value || value.trim().length === 0) {
        callback(new Error('请输入设备IP'))
    } else if (value.match(reg) === null) {
        callback(new Error('请输入合法IP'))
    } else if (RegExp.$1 <= 0 || RegExp.$4 <= 0) {
        callback(new Error('请输入合法IP'))
    } else {
        callback()
    }
};


export const validateMoreSelect = (word, rule, vlaue, callback) => {
    if (value.length === 0) {
        callback(new Error('请选择' + word))
    } else {
        callback()
    }
}


